package com.violet.redis.anno;


import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

/**
 * 类说明: redis 缓存注解-保存返回数据到缓存
 *
 * @author wqf
 * @date 2023/7/20 11:34
 */
@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface CacheSave {

    /**
     * 缓存key前缀
     */
    String keyPrefix() default "";

    /**
     * 缓存key拼接的value
     */
    String keyValue() default "";

    /**
     * 过期时间 默认单位秒
     */
    long expire() default 1;

    /**
     * 缓存时间单位
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;

    /**
     * 缓存条件判断，如返回数据为null时不进行缓存
     */
    String condition() default "";

    /**
     * 缓存策略   普通缓存、过期时间范围随机
     */
    String cachePolicy() default "";
}

